var express = require('express');
var router = express.Router();
http://localhost:3000/content/add
/* GET users listing. */
router.get('/add', function(req, res, next) {
    res.render("content/content_add");

});

router.get('/add/keke', function(req, res, next) {
    res.render("content/content_add");
});

router.get('/add/keke', function(req, res, next) {
    res.render("content/content_add");
});

/* GET users listing. */
router.get('/search', function(req, res, next) {
    res.render("content/search",{success:"查询成功...."});
});


router.get('/params', function(req, res, next) {
    var id = req.param("id");
    var username = req.param("username");
    console.log(id+"==="+username);
    res.render("content/search",{success:"查询成功...."});
});

router.get('/params2/:id/:name', function(req, res, next) {
    var id = req.params.id;
    var name = req.params.name;
    var username = req.param("username");
    console.log(id+"==="+username+"==="+name);
    res.render("content/search",{success:"查询成功...."});
});


//表单处理
router.post('/params3', function(req, res, next) {
     //如果要获取post里面的数据
    var body = req.body;
    console.log(body.username+"==="+body.password+"=="+body.telephone);
    if(req.xhr){//如果你的请求方式是ajax的话
        //res.send({success:true,code:1});
        //res.status(200);
        //res.set(("Content-type","text/html"));
        res.json({success:true,code:1});
    }else{
       // res.status(200);
       // res.set(("Content-type","text/html"));
        res.render("content/search",{success:"查询成功...."});
    }
});


//express req和res两个常见的一些方法和属性
router.get('/params4/:id/:name', function(req, res, next) {
    //http://localhost:3000/content/params4/111/keke?id=1&address=33333
    console.log("获取请求的URL重的路由参数："+JSON.stringify(req.params));
    console.log("获取请求的URL重的路由参数 id："+req.params.id);
    console.log("获取请求的URL重的路由参数 name："+req.params.name);
    console.log("获取请求URL的参数的字符串列表:"+JSON.stringify(req.query));//?id=1&address=33333
    console.log("获取请求URL的参数的字符串列表:"+req.query.id+"==="+req.query.address);//?id=1&address=33333
    console.log("获取当前的路由对象："+JSON.stringify(req.route));

    //ctrl+shift+f:批量查找
    //ctrl+shift+r:批量替换
    //ctrl+h ==>eclipse  myeclipse editplus sublit 全局查询和替换

    console.log("获取请求头："+JSON.stringify(req.headers));
    console.log("获取请求头："+JSON.stringify(req.headers.connection));
    console.log("获取请求头："+JSON.stringify(req.headers["accept-encoding"]));
    console.log("获取请求头："+JSON.stringify(req.headers["cookie"]));

    console.log("获取当前的COOKIE："+JSON.stringify(req.cookies));
    console.log("获取接收的类型："+req.accepts("appddd"));
    console.log("获取接收的类型："+req.accepts("text/html"));
    console.log("获取IP地址："+req.ip);
    console.log("获取请求的路径（是不包含：协议，主机，端口和查询字符串）："+req.path);
    console.log("获取主机名："+req.host);
    console.log("判断是否是异步(ajax)请求："+req.xhr);
    console.log("获取请求协议："+req.protocol);
    console.log("获取请求地址URL："+req.url);
    console.log("获取请求地址 originalUrl："+req.originalUrl);
    console.log("获取客户端的语言："+req.acceptsLanguage);
    /*
    * req  - node http.incomingMessage的实例
     express只不过在node http.incomingMessage添加一些了功能，它拥有req的所有的API方法和属性
     express req出了req.headers和req.url是来自nodejs 原生的req其他的都是通过express派生出来的.
    *
    * */

    //关于 res里面常用方法
    //Connection:keep-alive
    //Date:Fri, 06 Jan 2017 15:08:48 GMT
    //ETag:W/"5de-KA7Gw6WDOIqXggreNPmvLQ"
    //文本  对象， (图片，音频 下载)
    //res.status(code) 默认不写，就是200，404
    //设置响应出状态：res.status(200); 百度：状态含义。404 500 200 503 403 400？
    //设置响应的类型：res.set("Content-type","text/html");
    // res.set("Date","ddddd")
    //专门为Content-type提供:res.type("text/html")
    //重定向：res.redirect("/student/add"); res.redirect("https://www.mengkedu.com");
    //cookie设置：res.cookie(name,value,[options])
    //清除cookie:res.clearCookie(name,[options]);

    //数据方式对象nodejs原生态=res.end()的封装
    //res.send 发送送文本，json都可以发送。但是个人建议：如果发送json的话都使用res.json()
    //res.json({key:value,key1:value1.....});
    //res.attachment([filename],) res.download(path,[filename],callback);提供服务器文件下载
    //res.sendFile(path,[option],[callback]);图片和文件发送
    //res.locals:设置给应用程序级别的作用域,几乎用的很少。如果你的数据几乎不修改的时候可以考虑用它
    //res.render("view relative path",报文数据{key:value,key1:value1.....});
    //报文数据其实就是设置给页面渲染的模板数据，就是一个作用域=req级别的数据
    //作用域三个级别：locals > session(cookie)>req

    //看源码：express/express.js
    //看源码：express/application.js
    //看源码：express/request.js
    //看源码：express/response.js
    //看源码：express/route.js
    res.send("success");
});

//java---application.setAttribute getAttribute removeAttribute


router.get("/params5",function(req,res,next){
    //res.locals:设置给应用程序级别的作用域,几乎用的很少。如果你的数据几乎不修改的时候可以考虑用它
    //res.render("view relative path",报文数据{key:value,key1:value1.....});
    res.locals.username = "keke";
    res.locals.age = "30";
    res.render("content/success",{username:"湖南长沙"})
    //res.redirect("success");
});
//?locals的作用域还如果区分

router.get("/success",function(req,res,next){
    res.render("content/success");
});



//重定向 比如登录退出
router.get("/redirect",function(req,res,next){
    //res.redirect("https://www.mengkedu.com");
    //http://localhost:3000/content/redirect
    //res.redirect("add");
    //http://localhost:3000/content/
    //res.redirect("/student/add");
});

/*
router.get("/error",function(req,res,next){
   res.status(404);
   res.set(("Content-type","text/plain"));
   res.render("/error");
});
*/



/*

* 第一步：在routes的目录下先进一个模块 content.js
* 第二步：在views下面建立add.html和search.html
* 第三步：在app.js文件进行引入模块
* var content = require("./router/content");
* 第四步：注册路由
* app.use("/content",content)
*
* 重启服务 npm start，访问：
* http://localhost:3000/content/add
*
*
* router.get('请求路径', function(req, res, next) {
    res.render("页面路径/页面名称");
 });
*
*
*
*
* 关于参数相关处理 get参数 和ajax
 http://localhost:3000/content/add?id=1&username=keke

 关于post请求的参数,form和ajax
 获取请求的体的参数
*
*
*
*
*
*
* */


module.exports = router;
